home *** CD-ROM | disk | FTP | other *** search
-
- Hedge Row
-
- Copyright 1993-1995 Diana Gruber
-
- This game is one of many I have on my hard disk that I never quite finished.
- I am releasing it now, with source code, in the hope that some other game
- programmers will find it useful. Feel free to dissect and re-use this code,
- and write "real" games based on it.
-
- Hedge Row has several features that make it interesting. It was my first
- attempt at an SVGA game. It runs in an 800x600x256 video mode, and uses two
- physical pages (video memory) and one logical page (EMS or XMS). In this
- sense, it is a resource-intensive program. Yet the EXE size is tiny and the
- program uses less than 100K of conventional RAM.
-
- Another interesting feature is the recursive maze solution. This is one of
- those problems they love to give you in computer science classes. Students who
- want to turn in my code to satisfy their homework assignments have my
- permission to do so.
-
- The mouse motion is also interesting. The mouse is constrained to the maze
- paths; it will not go off the path into illegal areas. This was hard code to
- write. Looking at it, it doesn't look that difficult, but I remember I had a
- real hard time writing it.
-
- Running Hedge Row
- -----------------
- Just type HEDGE. Follow the simple instructions on the screen. If you get
- stuck, press F1 for help.
-
- Cheat mode
- ----------
- Maze tile paths are drawn in two colors. The true path is drawn in palette 7,
- and the other paths are drawn in palette 5. Both palettes are set to white,
- but you can change the color of the true path by using the "cheat mode".
-
- Press 'c' to activate the cheat mode. This will change the color of the true
- path from white to light blue. Pressing 'c' again will change it back. The
- cheat mode makes it easy to traverse the maze path, but it is not nearly as
- interesting as the recursive maze solution.
-
- Recursive maze solution
- -----------------------
- Press 'r' to see an honest-to-goodness recursive maze solution. I wrote this,
- but don't ask me how it works. I haven't the foggiest. It works great though,
- doesn't it?
-
- Next maze
- ---------
- Press 'n' to abandon the current maze and start a new one. There are seven
- mazes distributed with this version of the Hedge Row program. Will there ever
- be more? I don't know!
-
- Exit
- ----
- Press Escape to exit the program. Isn't that easy?
-
- Troubleshooting
- ---------------
- Hedge Row requires a mouse, SVGA card and monitor, and approximately 512K of
- extended or expanded memory to run. If any of these are missing, Hedge Row
- will not work.
-
- If you have EMS or XMS memory and Hedge Row reports that you do not, check
- that other programs are not using that memory. On my system, I noticed
- Smartdrive was eating up all my extended memory. Turn Smartdrive off, or
- configure it to use less memory, so that Hedge Row can have some.
-
- SVGA cards
- ----------
- Hedge Row should work on most SVGA cards. It uses Fastgraph to do a chipset
- autodetect and then does direct chipset support. If it does not find a chipset
- it knows, it will support Super VGA through the VESA BIOS extensions.
-
- Please report any SVGA problems to Ted Gruber Software. If you have video
- hardware that Fastgraph does not support, we want to know about it.
-
- Files in the distribution
- -------------------------
- HEDGE.EXE the program
- HEDGE.DOC this file
-
- HEDGE.C source code for the game
- HEDGE.H prototypes for functions in HEDGE.C
- COMMON.C source code for "often used" functions
- COMMON.H prototypes for functions in COMMON.C
- DEFS.H defines, includes, and global variables
-
- DUBDINER.PCX PCX file containing picture of dub diner
- HEDGE.PCX PCX file containing maze tiles
- HEDGE.ATT attributes of maze tiles (open on left, right, top, etc.)
-
- MAZE001.LEV \
- MAZE002.LEV \
- MAZE003.LEV \
- MAZE004.LEV maze data for 7 different mazes
- MAZE005.LEV /
- MAZE006.LEV /
- MAZE007.LEV /
-
- Compiling and linking
- ---------------------
- Hedge Row requires Fastgraph 4.0 or Fastgraph/Light 4.0 or to link. You can
- download Fastgraph/Light from our BBS at (702) 796-7134, from our internet
- ftp site (ftp.accessnv.com), or from the CompuServe GAMDEV forum (GO GAMDEV).
-
- I used the medium model to compile. The following commands show the
- compilation and linking sequences for each supported compiler:
-
- Borland C++:
- BCC -mm HEDGE.C COMMON.C FGM.LIB
-
- Microsoft C/C++ and Visual C++:
- CL /AM HEDGE.C COMMON.C /link FGM /STACK:6144
-
- Microsoft QuickC:
- QCL /AM HEDGE.C COMMON.C /link FGM /STACK:6144
-
- Microsoft Visual C++ 32-bit Edition with Phar Lap TNT extender:
- CL HEDGE.C COMMON.C /link /stub:\TNT\BIN\GOTNT.EXE FG32VC.LIB
-
- Power C:
- PC /mm HEDGE
- PC /mm COMMON
- PCL HEDGE COMMON ;FGM
-
- Turbo C and Turbo C++:
- TCC -mm HEDGE.C COMMON.C FGM.LIB
-
- Watcom C/C++ (16 bits):
- WCL /mm HEDGE.C COMMON.C FGM.LIB
-
- Watcom C/C++ (32 bits) with Rational Systems DOS/4GW extender:
- WCL386 /l=dos4g HEDGE.C COMMON.C FG32.LIB FG32DPMI.LIB
-
- Zortech C++:
- ZTC -mm HEDGE.C COMMON.C FGM.LIB
-
- If you are linking with Fastgraph/Light, replace the FGM library references
- with FGLM.
-
- Stack considerations
- --------------------
- The recursive solution requires an increased stack size. The more vertices in
- the maze, the bigger stack you need. I increased the stack size by adding this
- to the Microsoft link command: /STACK:6144. This stack is big enough for most
- standard mazes. A really complicated maze would need a bigger stack.
-
- Maze #7 has the most vertices.
-
- How maze tiles work
- -------------------
- The tiles are 16x16 pixel rectangles, stored in the file HEDGE.PCX. Each tile
- represents a possible maze path: up and down, left to right, branch in 2 or 3
- directions, etc. They are numbered starting at 0 in the upper left corner,
- through 239 in the lower right. Not all the tiles are needed in the maze game,
- there are a bunch of "blank" tiles.
-
- The layout array is defined like this:
-
- unsigned char layout[50][38];
-
- It is a two dimensional array corresponding to the positions of the tiles on
- the SVGA screen. 50 tiles x 16 pixels = 800 pixels total, which is the
- horizontal resolution of the screen. Similarly, the vertical resolution is 600
- pixels, or 38 tiles x 16 pixels.
-
- Tiles are stored on the hidden page and transferred to the visual page using
- fg_tcxfer. Color 0 is the transparent color, so the tiles can be superimposed
- on the DUBDINER.PCX picture without completely covering it.
-
- Meanwhile, a clean copy of the dubdiner picture is stored offscreen on a
- logical page in EMS or XMS memory. When a new maze is drawn, the picture is
- copied to the visual page and a new sequence of tiles is drawn over it.
-
- What I would add to Hedge Row to make it a real game
- ----------------------------------------------------
- For one thing, I would create a better intro screen. Also, I would use better
- fonts. The reason I used the ROM font is so you can link with the shareware
- version of Fastgraph. It would look better if I used Fastgraph/Fonts.
-
- Also, I would generate about 100 more mazes. This is the main reason I never
- finished the program. Those mazes take a long time to create, and they get
- boring after a while.
-
- I wrote some maze generation code, but the mazes were not attractive. In my
- opinion, mazes that have repetitious patterns look prettier. The computer-
- generated mazes were too random.
-
- I would also add some challenges, such as a timer, some traps (quicksand?),
- monsters, and items such as hidden walls, secret keys, etc. I think it would
- be an interesting game if I had done those things, but I never got around to
- it...my hard disk is littered with half-finished games.
-
- About dub diner
- ---------------
- The background picture, DUBDINER.PCX, was done by those great guys over at dub
- Media. Dub Media is dedicated to providing quality computer graphics to meet
- your needs and budget. Whether your reuqirements are VGA-resolution still
- images or broadcast-quality animation, dub Media can offer a creative
- alternative.
-
- Dub Media sent me the diner file in a GIF format, but I converted it to a PCX
- file so my users can recompile and relink the source code with
- Fastgraph/Light. I also reorganized the palette colors a little so my maze
- path would be red and white. For an original of the dubdiner GIF, and
- information about other art, you can contact Alfred Woo and Mike Wall at:
-
- dub Media
- 75 Trapelo Road
- Waltham, MA 02154
- (617) 647-1101
-
- About Fastgraph
- ---------------
- Fastgraph is a graphics library. You use it to write games. You can download
- the shareware version, or if you call me, I will mail it to you, along with
- more information, an order form and current prices.
-
- Distribution permission
- -----------------------
- This program is being distributed primarily for Fastgraph users to use as an
- example to help them learn about Fastgraph. It is not a shareware program, and
- is not appropriate for vendor catalogs, retail sales, or CD-ROM distribution.
- This program may be distributed via bulletin boards and online services such
- as CompuServe. You may make copies of this program and give it to your friends
- as long as you don't charge them money for it. Any other type of distribution
- is prohibited unless you have written permission from the author.
-
- Contacting the author
- ---------------------
-
- Diana Gruber
- Ted Gruber Software
- PO Box 13408
- Las Vegas, NV 89112
- (702) 735-1980 (voice)
- (702) 796-7134 (bbs)
- (702) 735-4603 (fax)